#ifndef QMAINVIEW_H
#define QMAINVIEW_H

#include <QObject>
#include <QWidget>
#include <QModelIndex>
#include <QString>

class QListView;
class QStandardItemModel;
class QStringListModel;
class QListWidget;
class shellmanager;

///主窗口
class qmainview : public QWidget
{
    Q_OBJECT
public:
    explicit qmainview(QWidget *parent = nullptr);

signals:

private:
    /**
     * 最大化
     */
    void maxmumSize();
    /**
     * 最小化
     */
    void minimumSize();

    /**
     获取桌面宽高
     */
    void getDesktopSize();

    ///初始化listview
    void initRootListView();
    void initWorkListView();

    ///遍历文件夹
    QStringList reverseDir(const QString & path);


    ///初始化仓库数据
    void initLeftView();
    ///初始化工作目录数据
    void initRightView();

    ///初始化内存数据
    void initDataStructure();

private slots:
    void listClick(QModelIndex index);

private:
    /**
      窗口宽高
      */
    int _width;
    int _height;

    ///主窗口list
    QListWidget* _lviewroot;
    QListWidget* _lviewwork;
    QStringListModel *_listmodel;
    QStandardItemModel *_itemmodelroot;
    QStandardItemModel *_itemmodelwork;
    QString _sourceRoot;
    QString _sourceWork;

    ///程序管理器
    shellmanager* smanager;
    
    int _rootcols;
    int _workcols;
    int rows;
};

#endif // QMAINVIEW_H
